/*
	lshifter.v
	Logic left shifter structure
	
	This project and file(s) are released under GNU GPL v3.
	Please find license file from root directory.
	Meng Sun (c) 2013 <leon.meng.sun@gmail.com>
*/

module lshifter (A, SEL, Y);

input [7:0] A;
input [2:0] SEL;
output [7:0] Y;

wire [7:0] A;
wire [2:0] SEL;
wire [7:0] Y;

mux8 muxA7 ({A[0],A[1],A[2],A[3],A[4],A[5],A[6],A[7]}, SEL, Y[7]);
mux8 muxA6 ({1'b0,A[0],A[1],A[2],A[3],A[4],A[5],A[6]}, SEL, Y[6]);
mux8 muxA5 ({1'b0,1'b0,A[0],A[1],A[2],A[3],A[4],A[5]}, SEL, Y[5]);
mux8 muxA4 ({1'b0,1'b0,1'b0,A[0],A[1],A[2],A[3],A[4]}, SEL, Y[4]);
mux8 muxA3 ({1'b0,1'b0,1'b0,1'b0,A[0],A[1],A[2],A[3]}, SEL, Y[3]);
mux8 muxA2 ({1'b0,1'b0,1'b0,1'b0,1'b0,A[0],A[1],A[2]}, SEL, Y[2]);
mux8 muxA1 ({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,A[0],A[1]}, SEL, Y[1]);
mux8 muxA0 ({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,A[0]}, SEL, Y[0]);

endmodule